Skip to content

feat(postgresql): surface TransportSchemaName in queue endpoint diagnostics - #2

Draft
uniquelau wants to merge 1 commit into
mainfrom
feat/describe-transport-schema
Draft

feat(postgresql): surface TransportSchemaName in queue endpoint diagnostics#2
uniquelau wants to merge 1 commit into
mainfrom
feat/describe-transport-schema

Conversation

@uniquelau

Copy link
Copy Markdown
Owner

Review copy on our fork — please review before I open this against JasperFx/wolverine. Small, visibility-only diagnostic.

Problem

Two hosts sharing one Postgres database must set an identical transport-queue schema (TransportSchemaName). If they diverge, the sender writes to its schema's queue tables and the receiver polls a different schema — messages strand with no error and no dead-letter. The resolved schema isn't shown anywhere in diagnostics (PostgresqlQueue didn't override DescribeProperties()), so a misconfiguration is invisible until traffic goes missing.

Change (tiny, additive, diagnostic-only)

  • PostgresqlQueue.DescribeProperties() override — calls base.DescribeProperties() and adds ["TransportSchemaName"] = Parent.TransportSchemaName (the resolved queue schema, QueueTable binds to exactly this). Follows the existing RabbitMqQueue.DescribeProperties() pattern (call base, add entries).
  • No cross-host assertion, comparison, or throw — this only surfaces the value. A genuine mismatch guard would be a separate redesign (a host can't see another process's config at startup).

Test

describe_properties_includes_the_resolved_transport_schema (PostgresqlTests) — DB-free unit test: sets a custom schema, constructs the queue, asserts the dictionary carries the key/value. All 10 PostgresqlQueueTests pass (net10.0). No database needed.

Value: makes a silent-failure mode visible in wolverine describe for anyone running the shared-database multi-host Postgres-transport pattern. Optional startup log skipped to keep it minimal.

…ostics

PostgresqlQueue did not override Endpoint.DescribeProperties(), so the
resolved transport-queue schema was invisible in `wolverine describe` and
endpoint diagnostics. Two hosts sharing one Postgres database must set an
identical TransportSchemaName; if they diverge the queue tables live in
different schemas and messages strand silently (no error, no dead-letter).

Override DescribeProperties() to add the resolved schema so the value is
observable. Visibility only - no cross-host mismatch assertion or throw.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant